A known modern textile dyeing apparatus includes multiple arrays or color bars, each comprising a plurality of individual, electronically addressable dye jets. Each of the dye jets in a single array outputs the same color of dye. The arrays are positioned in spaced relation across the path of a moving substrate.
Using such apparatus, the pattern-wise application of dye to the textile materials or substrates requires a large quantity of digitally encoded pattern data which must be sorted and routed to each of the individual dye jets comprising each of the arrays. Each of the arrays of dye jets extends across the width of the substrate path as the substrate moves under the arrays. The time period during which the dye streams produced by the individual dye jets in a given array are allowed to strike the substrate are individually controlled. This allows for shade variations to be produced from side-to-side (and end-to-end) on the substrate by varying the quantity of dye applied to the substrate along the length of a given array.
One such control system capable of providing this capability is described in co-pending U.S. Ser. No. 327,843, entitled "DATA LOADING AND DISTRIBUTING PROCESS AND APPARATUS FOR CONTROL OF A PATTERNING PROCESS", filed on Mar. 23, 1989, now U.S. Pat. No. 4,984,169 the specification of which is hereby incorporated by reference. This system processes pattern data received from a real-time processor through the use of specific electronic circuitry which accepts the pattern data in the form of a series of 8-bit units. Each of the 8-bit units or pixel codes uniquely identifies, for each pattern element or pixel, a pattern design element to be associated with that pattern element or pixel.
The term "pattern element" as used herein is intended to be analogous to the term "pixel" as that term is used in the field of electronic imaging. The number of different pattern design elements is equal to the number of distinct areas of the pattern which may be assigned a separate color.
The term "pattern line" as used herein is intended to describe a continuous line of single pattern elements extending across the substrate, parallel to the patterning arrays. Such pattern lines have a thickness, measured in the direction of substrate travel, equal to the maximum permitted amount of substrate travel under the patterning arrays between array pattern data updates.
In this control system, the pixel codes must first be converted to "on/off" firing instructions, (referring to the actuation or deactuation, respectively, of the individual dye streams produced by the dye jets). This is performed by electronically associating the "raw" pixel codes with pre-generated firing instruction data from a computer generated look-up table. The pixel codes merely define those distinct areas of the pattern which may be assigned a distinguishing color. Each code specifies, for each pattern line, the dye jet response for a given dye jet position on each and every array. In this system the number of arrays equal eight; therefore, each pixel code controls the response of eight separate dye jets (one per array) with respect to a single pattern line.
The pixel codes for a given array is preferably arranged in sequence, with data for dye jets 1-N for the first pattern line being first in the series, followed by data for dye jets 1-N for the second pattern line, etc. The complete serial stream of such pixel codes is sent to a firing time converter and memory associated with each respective array for conversion of the pixel codes into the respective firing times.
Each firing time converter includes a look-up table having a sufficient number of addresses so that each possible address code forming the serial stream of pattern data may be assigned a unique address in the look-up table. At each address within the look-up table is a byte representing a relative firing time or dye contact time, which, assuming an 8-bit value at the address code of interest, can be zero or one of 255 different discrete time values corresponding to the relative amount of time the dye jet in question is to remain "on". Therefore, each specific dye jet location on each and every array can be assigned one of 256 different firing times.
The firing time data from the look-up table for each array is then further processed to account for the "stagger", e.g., the physical spacing between arrays, and the allocation of the individual firing instructions for each jet in the array. The process of sequencing the individual pattern line data to accommodate substrate travel time or stagger between adjacent arrays is performed through the use of array-specific Random Access Memories (RAMs), which are preferably of the static type. All pattern data for a specific array is loaded into a RAM individually associated with that array. The pattern data is in the form of a series of bytes, each byte specifying a desired firing time for a single applicator or jet comprising the array. The loading process is a coordinated one, with all jet firing time data being loaded into the respective RAMs at the same time and in the same relative order, i.e., all firing times corresponding to the first line of the pattern for all jets in each array is loaded in the appropriate RAM first, followed by all data corresponding to the second pattern line, etc. Each RAM is read using reading address offsets which effectively delay the reading of the data a sufficient amount of time to allow a specific area of the substrate to "catch up" to the corresponding pattern data for that specific area which will be sent to the next array along the substrate path.
At this time, the series of individual firing times expressed in byte form are transferred into a sequence of individual binary digit ("bit") groups. Each group in the sequence represents the value of its corresponding respective firing time by the relative number of binary digits of a predetermined logic value (e.g., logical "one"="fire") which are sequentially "stacked" within each group. This transformation allows the firing times, expressed in byte form, to be expressed as a continuing sequence of individual firing commands (i.e., single bits) which may be recognized by the applicators.
Finally, the individual firing instructions for each jet in the array are loaded into a collection of First-In First-Out Memories (FIFOs). Each array is associated with an individual set of FIFOs. Each FIFO repeatedly sends its contents, one byte at a time and strictly in the order in which the bytes were originally loaded, to a comparator. The value of the byte, representinq a desired elapsed firing time of a single jet along the array, is compared with a clock value which has been initialized to provide a value representing the smallest increment of time for which control of any jet is desired. As a result of the comparison, a firing command in the form of a logical "one" or logical "zero", which signifies that the jet is to "fire" or "not fire", respectively, is generated and is forwarded to a shift register associated with the array, as well as to a detector. After all bytes (representing all jet locations along that array) have been sent and compared, the contents of the shift register are forwarded, in parallel, to the air valve assemblies along the array by way of a latch associated with the shift register. Thereafter, the counter value is incremented, the same contents of the FIFO are compared with the new counter value, and the contents of the shift register are again forwarded, in a parallel format and via a latch, to the air valve assemblies in the array.
At some counter value, all elapsed firing times read from the FIFOs will be less than or equal to that value of the counter. When this condition exists at every array, fresh data, representing a new pattern line, is forwarded from the RAM in response to a transducer pulse indicating the substrate has moved an amount equivalent to one pattern line. This fresh data is loaded into the FIFOs and a new series of iterative comparisons is initiated, using a re-initialized counter. This process is repeated until all pattern lines have been processed. If the pattern is to be repeated, the RAM re-initiates the above procedure by sending the first pattern line to the appropriate FIFO's.
The known control system thus includes a large number of hardware components, i.e., look-up tables, stagger memories, and FIFOs associated with each color bar in the apparatus, all of which must operate properly to insure that the source pattern data is correctly transformed and printed on the substrate. There is therefore needed a diagnostic system which can check the major components in the control system to determine whether it is operating properly. Because of the extremely large number of components to be checked, the diagnostic system must be able to operate quickly and efficiently.